visibility-decoration. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@114465 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/__locale b/include/__locale index 27f7b0d..8f31dc4 100644 --- a/include/__locale +++ b/include/__locale
@@ -30,7 +30,7 @@ template <class _Facet> bool has_facet(const locale&) throw(); template <class _Facet> const _Facet& use_facet(const locale&); -class locale +class _LIBCPP_VISIBLE locale { public: // types: @@ -89,10 +89,11 @@ template <class _Facet> friend const _Facet& use_facet(const locale&); }; -class locale::facet +class _LIBCPP_VISIBLE locale::facet : public __shared_count { protected: + _LIBCPP_INLINE_VISIBILITY explicit facet(size_t __refs = 0) : __shared_count(static_cast<long>(__refs)-1) {} @@ -104,14 +105,14 @@ virtual void __on_zero_shared(); }; -class locale::id +class _LIBCPP_VISIBLE locale::id { once_flag __flag_; int32_t __id_; static int32_t __next_id; public: - id() {} + _LIBCPP_INLINE_VISIBILITY id() {} private: void __init(); void operator=(const id&); // = delete; @@ -160,27 +161,31 @@ // template <class _CharT> class collate; template <class _CharT> -class collate +class _LIBCPP_VISIBLE collate : public locale::facet { public: typedef _CharT char_type; typedef basic_string<char_type> string_type; + _LIBCPP_INLINE_VISIBILITY explicit collate(size_t __refs = 0) : locale::facet(__refs) {} + _LIBCPP_INLINE_VISIBILITY int compare(const char_type* __lo1, const char_type* __hi1, const char_type* __lo2, const char_type* __hi2) const { return do_compare(__lo1, __hi1, __lo2, __hi2); } + _LIBCPP_INLINE_VISIBILITY string_type transform(const char_type* __lo, const char_type* __hi) const { return do_transform(__lo, __hi); } + _LIBCPP_INLINE_VISIBILITY long hash(const char_type* __lo, const char_type* __hi) const { return do_hash(__lo, __hi); @@ -235,15 +240,15 @@ return static_cast<long>(h); } -extern template class collate<char>; -extern template class collate<wchar_t>; +extern template class _LIBCPP_VISIBLE collate<char>; +extern template class _LIBCPP_VISIBLE collate<wchar_t>; // template <class CharT> class collate_byname; -template <class _CharT> class collate_byname; +template <class _CharT> class _LIBCPP_VISIBLE collate_byname; template <> -class collate_byname<char> +class _LIBCPP_VISIBLE collate_byname<char> : public collate<char> { locale_t __l; @@ -262,7 +267,7 @@ }; template <> -class collate_byname<wchar_t> +class _LIBCPP_VISIBLE collate_byname<wchar_t> : public collate<wchar_t> { locale_t __l; @@ -293,7 +298,8 @@ // template <class charT> class ctype -class ctype_base { +class _LIBCPP_VISIBLE ctype_base +{ public: typedef __uint32_t mask; @@ -326,10 +332,10 @@ _LIBCPP_ALWAYS_INLINE ctype_base() {} }; -template <class _CharT> class ctype; +template <class _CharT> class _LIBCPP_VISIBLE ctype; template <> -class ctype<wchar_t> +class _LIBCPP_VISIBLE ctype<wchar_t> : public locale::facet, public ctype_base { @@ -431,7 +437,7 @@ }; template <> -class ctype<char> +class _LIBCPP_VISIBLE ctype<char> : public locale::facet, public ctype_base { const mask* __tab_; @@ -528,7 +534,7 @@ #else static const size_t table_size = 256; // FIXME: Don't hardcode this. #endif - const mask* table() const throw() {return __tab_;} + _LIBCPP_ALWAYS_INLINE const mask* table() const throw() {return __tab_;} static const mask* classic_table() throw(); protected: @@ -545,10 +551,10 @@ // template <class CharT> class ctype_byname; -template <class _CharT> class ctype_byname; +template <class _CharT> class _LIBCPP_VISIBLE ctype_byname; template <> -class ctype_byname<char> +class _LIBCPP_VISIBLE ctype_byname<char> : public ctype<char> { locale_t __l; @@ -566,7 +572,7 @@ }; template <> -class ctype_byname<wchar_t> +class _LIBCPP_VISIBLE ctype_byname<wchar_t> : public ctype<wchar_t> { locale_t __l; @@ -697,7 +703,7 @@ // codecvt_base -class codecvt_base +class _LIBCPP_VISIBLE codecvt_base { public: _LIBCPP_ALWAYS_INLINE codecvt_base() {} @@ -706,12 +712,12 @@ // template <class internT, class externT, class stateT> class codecvt; -template <class _InternT, class _ExternT, class _StateT> class codecvt; +template <class _InternT, class _ExternT, class _StateT> class _LIBCPP_VISIBLE codecvt; // template <> class codecvt<char, char, mbstate_t> template <> -class codecvt<char, char, mbstate_t> +class _LIBCPP_VISIBLE codecvt<char, char, mbstate_t> : public locale::facet, public codecvt_base { @@ -797,7 +803,7 @@ // template <> class codecvt<wchar_t, char, mbstate_t> template <> -class codecvt<wchar_t, char, mbstate_t> +class _LIBCPP_VISIBLE codecvt<wchar_t, char, mbstate_t> : public locale::facet, public codecvt_base { @@ -880,7 +886,7 @@ // template <> class codecvt<char16_t, char, mbstate_t> template <> -class codecvt<char16_t, char, mbstate_t> +class _LIBCPP_VISIBLE codecvt<char16_t, char, mbstate_t> : public locale::facet, public codecvt_base { @@ -966,7 +972,7 @@ // template <> class codecvt<char32_t, char, mbstate_t> template <> -class codecvt<char32_t, char, mbstate_t> +class _LIBCPP_VISIBLE codecvt<char32_t, char, mbstate_t> : public locale::facet, public codecvt_base { @@ -1052,12 +1058,14 @@ // template <class _InternT, class _ExternT, class _StateT> class codecvt_byname template <class _InternT, class _ExternT, class _StateT> -class codecvt_byname +class _LIBCPP_VISIBLE codecvt_byname : public codecvt<_InternT, _ExternT, _StateT> { public: + _LIBCPP_ALWAYS_INLINE explicit codecvt_byname(const char* __nm, size_t __refs = 0) : codecvt<_InternT, _ExternT, _StateT>(__nm, __refs) {} + _LIBCPP_ALWAYS_INLINE explicit codecvt_byname(const string& __nm, size_t __refs = 0) : codecvt<_InternT, _ExternT, _StateT>(__nm.c_str(), __refs) {} protected: @@ -1074,7 +1082,7 @@ extern template class codecvt_byname<char16_t, char, mbstate_t>; extern template class codecvt_byname<char32_t, char, mbstate_t>; -void __throw_runtime_error(const char*); +_LIBCPP_VISIBLE void __throw_runtime_error(const char*); template <size_t _N> struct __narrow_to_utf8 @@ -1258,10 +1266,10 @@ // template <class charT> class numpunct -template <class _CharT> class numpunct; +template <class _CharT> class _LIBCPP_VISIBLE numpunct; template <> -class numpunct<char> +class _LIBCPP_VISIBLE numpunct<char> : public locale::facet { public: @@ -1292,7 +1300,7 @@ }; template <> -class numpunct<wchar_t> +class _LIBCPP_VISIBLE numpunct<wchar_t> : public locale::facet { public: @@ -1324,10 +1332,10 @@ // template <class charT> class numpunct_byname -template <class charT> class numpunct_byname; +template <class charT> class _LIBCPP_VISIBLE numpunct_byname; template <> -class numpunct_byname<char> +class _LIBCPP_VISIBLE numpunct_byname<char> : public numpunct<char> { public: @@ -1345,7 +1353,7 @@ }; template <> -class numpunct_byname<wchar_t> +class _LIBCPP_VISIBLE numpunct_byname<wchar_t> : public numpunct<wchar_t> { public: